/**
 * 创建main.js，用于处理项目初始化时的相应逻辑
 * @type {{}}
 */
const Main = {};


/**
 * 数据存储，localStorage
 * @type {{}}
 */
class Storage{
    constructor(type){
        this.type = type?type:"localStorage";
    };
    get getStorage(){
        if ( this.type === "localStorage" ){
            return window.localStorage?window.localStorage:{};
        }
        if ( this.type === "sessionStorage" ){
            return window.sessionStorage?window.sessionStorage:{};
        }
    };
    /**
     * 获取所有保存在storage中的数据
     * @returns {{}}
     */
    getAll(){
        // 获取数据
        return this.getStorage?this.getStorage:{};
    };
    /**
     * 数据保存；
     * 判断需要存入的item是否存在，如果不存在则保存
     * @param _item：需要保存的参数key值
     * @param _value：需要保存的参数值
     * @returns {string}
     */
    setItem( _item, _value){
        if ( _item ){
            // 保存至localStorage中
            this.getStorage.setItem(_item,_value);
        }
        // 更新时间戳
        // let _data = Date.parse(new Date());
        // this.getStorage.setItem(DsidealCommonData.constData.TIMESTAMP,_data);
    };

    /**
     * 根据传入的key值获取相应的value值
     * @param _item
     * @returns {*}
     */
    getItem(_item){
        if( !_item  ) return null;

        return this.getStorage.getItem(_item);
    };

    /**
     * 删除某一项key
     * @param _item
     */
    removeItem(_item){
        if( !_item ) return false;
        // 禁止删除时间戳
        //if ( _item === DsidealCommonData.constData.TIMESTAMP ) return false;
        // 删除
        this.getStorage.removeItem(_item);
    };

    /**
     * 清空所有
     */
    clearAll(){
        this.getStorage.clear();
    }
    /**
     * 获取保存在localStorage中所有参数的key值集合，并以字符串的形式返回
     * @returns {string}
     */
    getStorageKeyName(){
        if ( this.getStorage ){
            return Object.keys(this.getStorage).join(",");
        }
    };
}

export { Storage }
